package br.usjt.teste;

import static org.junit.Assert.*;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import br.usjt.servico.DAOFactory;
import br.usjt.servico.IClienteDAO;

public class REQ01CadastrarCliente_DAOCliente {
	static IClienteDAO clienteDAO;

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		clienteDAO = DAOFactory.getDAOFactory(DAOFactory.MYSQL).getClienteDAO();
	}

	
	/**
	 * Objetivo- verificar o comportamento da funcao cadastrar cliente na camada
	 * de persistencia
	 * Pre-condicao - o cpf nao esta cadastrado
	 */
	@Test
	public void CT01FBCadastraCliente_com_sucesso() {
		assertEquals("qt de registro modificados no db=", 1, clienteDAO.cadastra("87759492103",
				"carlos manoel", "r. taquari", "11111111"));
	}
	/**
	 * Objetivo- verificar o comportamento da funcao cadastrar cliente na camada
	 * de persistencia para um cpf ja cadastrado
	 * Pre-condicao - o cpf esta cadastrado
	 */
	@Test
	public void CT02A1CadastraCliente_cpf_ja_cadastrado() {
		clienteDAO.cadastra("58905389007", "carlos manoel", "r. taquari", "11111111");
		assertEquals("qt de registro modificados no db=", 0, clienteDAO.cadastra("58905389007",
				"carlos manoel", "r. taquari", "11111111"));
	}
	/**
	 * Objetivo- verificar o comportamento da funcao cadastrar cliente na camada
	 * de persistencia para um cpf invalido
	 * Pre-condicao - o banco de dados nao rejeita cpf invalido
	 */
	@Test
	public void CT03A2CadastraCliente_cpf_invalido() {
		
		assertEquals("qt de registro modificados no db=", 1, clienteDAO.cadastra("11111111",
				"carlos manoel", "r. taquari", "11111111"));
	}
	/**
	 * Objetivo- verificar o comportamento da funcao cadastrar cliente na camada
	 * de persistencia com nome em branco
	 * Pre-condicao - o banco de dados nao rejeita nome em branco
	 */
	@Test
	public void CT04A3CadastraCliente_nome_em_branco() {
		
		assertEquals("qt de registro modificados no db=", 1, clienteDAO.cadastra("22222222",
				"", "r. taquari", "11111111"));
	}
	@AfterClass
	public static void tearDownAfterClass() throws Exception {
		clienteDAO.exclui("58905389007");
		clienteDAO.exclui("11111111");
		clienteDAO.exclui("22222222");
		clienteDAO.exclui("87759492103");
	}

}
